#ifndef NRPSTG_GAMESTATEMANAGER_H
#define NRPSTG_GAMESTATEMANAGER_H

#include <string>
#include <SDL.h>
#include <vector>
#include <boost/unordered_map.hpp>

class Gamestate;

using namespace std;
using namespace boost;

class GamestateManager {
private:
    unordered_map<string, Gamestate*> _states;
    vector<Gamestate*> _state_list;

public:
    GamestateManager();
    ~GamestateManager();

    void add_state(string name, Gamestate* state);

    void push_state(string state);
    void pop_state();
    Gamestate* current_state();

    void input(SDL_Event* evt, unsigned int ms);
    void update(unsigned int ms);
    void draw();
};

#endif